package org.wlc.demov3.impl;

import com.wlc.util.JsonResult;
import org.wlc.demov1.MinibusTargetService;
import org.wlc.demov3.EventManager;
import org.wlc.demov3.LotteryService;

/**
 * @author 王立朝
 * @date 2022/5/12
 * @description:
 */
public class LotteryServiceImpl extends LotteryService {

    private MinibusTargetService minibusTargetService = new MinibusTargetService();

    /**
     * 1、这种使用抽象类的方式定义实现方法，可以在方法中扩展需要的额外调用。
     * 并提供抽象类`abstract LotteryResult doDraw(String uId)`，让类的继承者实现。
     * 2、同时方法的定义使用的是`protected`，也就是保证将来外部的调用方不会调用到此方法，只有调用到`draw(String uId)`，
     * 才能让我们完成事件通知。
     * 此种方式的实现就是在抽象类中写好一个基本的方法，在方法中完成新增逻辑的同时，再增加抽象类的使用。而这个抽象类的定义会有继承者实现。
     *
     * @param uid
     * @return
     */
    @Override
    protected JsonResult doDraw(String uid) {
        // 摇号
        String lottery = minibusTargetService.lottery(uid);
        // 结果
        return new JsonResult().success(uid,lottery);
    }
}
